home *** CD-ROM | disk | FTP | other *** search
/ Internet Warrior 1993 July / Internet Warrior No. 1 July 1993 - Austin Code Works.ISO / tools / oemacs / readme < prev   
Encoding:
Text File  |  1993-04-14  |  21.1 KB  |  468 lines

  1. [ Here's yet another version of GNU Emacs that runs within Windows, but
  2.   within a Windows DOS box. ]
  3.  
  4.      A preliminary version of "oemacs" has been made available via
  5. anonymous ftp.  Oemacs is, basically, a version of GNU Emacs V18.59 that
  6. will work inside a Windows 3.1 DOS box (note that it is NOT a native
  7. Windows application, but works within a DOS box).  It is partially based
  8. upon demacs, but is not compatible with it.
  9.  
  10.      At the end of this message, I've enclosed a copy of the file
  11. "readme.dos", which describes the features and problems of oemacs.  READ
  12. THIS BEFORE OBTAINING OEMACS.
  13.  
  14.  
  15. ***** Why would you want to use "oemacs"?  Because:
  16.  
  17. * It works within a Windows DOS box.  If you're feeling particularly
  18.   masochistic, you can start more than one copy of oemacs, each in a
  19.   different DOS box.
  20.  
  21. * It works with plain MSDOS or Windows 3.1.
  22.  
  23. * It fixes some bugs that demacs has.
  24.  
  25. * It is based upon GNU Emacs V18.59.
  26.  
  27. * It contains a few more useful emacs-lisp packages.  One or two of the
  28.   existing emacs-lisp packages have been upgraded, like info.el.
  29.  
  30. * Pressing Ctrl-Break at *ANY* time will interrupt whatever Emacs is
  31.   doing (assuming that it has not crashed and is not running
  32.   "subprocesses").  With demacs, pressing Ctrl-Break just sends a C-c to
  33.   demacs.
  34.  
  35.  
  36. ***** Why would you *NOT* want to use "oemacs"?  Because:
  37.  
  38. * It requires lots of RAM and lots of disk space.  In order to run
  39.   within Windows, you need at least 8MB of motherboard RAM, and I
  40.   recommend that you have at least 12-16MB.  You also need about 14MB of
  41.   disk space to install oemacs, *NOT* including any space used to hold
  42.   the .ZIP distribution files.  Demacs requires much less resources.
  43.  
  44. * It can take a while to start up (because it is not dumped, as is
  45.   demacs).  On my 33MHz 486DX, it takes about 10 seconds to start up.
  46.   Demacs starts up much faster.
  47.  
  48. * It doesn't handle large files very well.  Demacs works much better for
  49.   this.  The biggest file that oemacs can handle is probably just under
  50.   16MB (although I haven't tried this -- the largest file that I've
  51.   tried editing is 5MB).
  52.  
  53. * It has a fixed internal stack size.  Any highly recursive emacs-lisp
  54.   functions *might* fail with this version.  However, to minimize this
  55.   problem, I've set the maximum stack size to 300KB.  A typical Emacs
  56.   running on my (real ;-) workstation uses up 100-150KB of stack, and so
  57.   I gave oemacs a stack twice that size.  The majority of people will
  58.   probably never run into any stack problems, but you never know.
  59.   Demacs doesn't have this problem.
  60.  
  61. * Subprocesses don't work inside Windows.  Then again, demacs doesn't
  62.   work at all inside Windows.  "Subprocesses" in MSDOS are also
  63.   asynchronous; you CANNOT DO ANYTHING while a subprocess is running.
  64.  
  65. * It is based upon GNU Emacs V18.59.  (Yes, this is both a "feature" and
  66.   a "problem".)  A version by Pearl Software is based upon Lucid Emacs
  67.   V19.
  68.  
  69.  
  70. ***** Where can you get a copy?
  71.  
  72. NOTE: please access the following ftp site during "off-hours" --
  73.       sometime OTHER THAN 10AM-6PM EST (1500-2300 hours GMT/UTC).  The
  74.       site adminstrators have graciously provided the disk space, and I
  75.       don't want to annoy them by overloading their site with ftp
  76.       requests.
  77.  
  78.      NOTE THAT THIS IS A PRELIMINARY VERSION!  BACKUP YOUR HARD DISK
  79. BEFORE USING OEMACS!
  80.  
  81.      Oemacs is available via anonymous ftp from theory.lcs.mit.edu, in
  82. /pub/emacs/oemacs:
  83.  
  84. -rw-r--r--  1 5536     toc         21120 Apr  2 13:27 README
  85. -rw-r--r--  1 5536     toc       1077736 Apr  2 08:26 oemacs1.zip
  86. -rw-r--r--  1 5536     toc       1089291 Apr  2 08:26 oemacs2.zip
  87. -rw-r--r--  1 5536     toc       1094240 Apr  2 08:27 oemacs3.zip
  88. -rw-r--r--  1 5536     toc        719295 Apr  2 08:27 oemacs4.zip
  89.  
  90. All four files have been compressed using the new .zip 2.0 format (you
  91. can't use the old pkunzip programs), and must be extracted such that the
  92. subdirectory hierarchy is preserved (i.e., give the -d flag to pkunzip).
  93. Also, *ALL* four archives must be extracted in order to use this version
  94. of Emacs; while some files are unnecessary, they must be manually
  95. deleted (if you don't want them), after all of the files are extracted.
  96. Complete sources and binaries, with the exception of GNU termcap, are
  97. included.
  98.  
  99.      For a starting point, see the file "emacs-18.59/readme.1st".
  100.  
  101.      -- Darryl Okahata
  102.     Internet: darrylo@sr.hp.com
  103.  
  104. DISCLAIMER: this message is the author's personal opinion and does not
  105. constitute the support, opinion or policy of Hewlett-Packard or of the
  106. little green men that have been following him all day.
  107.  
  108. ===============================================================================
  109.                 OEMACS
  110.                  Release 1.0
  111.                 Thu Apr 1 1993
  112.  
  113.      While I would have liked to have used the name "demacs" or
  114. "demacs2", I didn't, because I don't want people thinking that this
  115. version is compatible with demacs.  For reasons of ease-of-use and
  116. ease-of-installation, this version is partially incompatible with
  117. demacs.  In particular, the two versions cannot share the same "_emacs"
  118. file (the "_emacs" file is the MSDOS equivalent of ".emacs").  The major
  119. differences between oemacs and demacs are:
  120.  
  121. * Oemacs works within a Windows 3.1 DOS box.
  122.  
  123. * Oemacs does not require a memory manager like EMM386 or QEMM, although
  124.   it is recommended that one be used.
  125.  
  126. * The _emacs files are different.  In oemacs, the _emacs file has been
  127.   simplified and streamlined.  Demacs cannot use the oemacs' _emacs
  128.   file, and oemacs cannot use the demacs' _emacs file.
  129.  
  130. * The terminal config files ("lisp/term/ibmpc.el") are different.
  131.   Oemacs doesn't rely on reprogramming the keyboard mapping via
  132.   ANSI.SYS.  Some versions of ANSI.SYS don't allow keyboard mapping, and
  133.   some versions even crashed if this was attempted, and so oemacs uses a
  134.   different method of keyboard handling.
  135.  
  136. * Oemacs doesn't have the NEMACS or FEPCTRL code merged into the Emacs C
  137.   code.  I can't test these features, and so I didn't bother merging
  138.   them in.  The merge was done by hand (and not via patch(1)), and so
  139.   merging these untestable features would have added more work, which I
  140.   didn't want.  The 8-bit support was kept, although it hasn't been
  141.   tested much.
  142.  
  143. * Oemacs needs to load the emacs-lisp files at startup.  Demacs can be
  144.   dumped, but oemacs cannot, and so oemacs needs to load the emacs-lisp
  145.   at startup.
  146.  
  147. * Oemacs is based upon Emacs V18.59.  Demacs is based upon
  148.   V18.55/V18.57.
  149.  
  150. * The version of dired that comes with oemacs has been modified, and
  151.   will work only with oemacs.  This version of dired will not work with
  152.   demacs.
  153.  
  154.  
  155. Here is a list of features and non-features in oemacs:
  156.  
  157. * Oemacs works within a Windows 3.1 DOS box.
  158.  
  159. * Enhanced C++ support has been added.  Barry A. Warsaw's latest and
  160.   greatest C++ mode has been added (including the "new syntax table" C
  161.   code from Lucid V19 for better and quicker editing of C++/C comments).
  162.   However, because DOS filenames cannot contain "+" characters, the
  163.   filename has been renamed from "c++-mode.el" to "cpp-mode.el".
  164.  
  165. * You can press Ctrl-Break at any time to interrupt oemacs.  Note that
  166.   the C-g key will only interrupt Emacs if Emacs is waiting for input.
  167.  
  168. * Added Sam Kendall's (kendall@CenterLine.COM) etags++ tags program,
  169.   which generates etags for C++ programs, as well as C, lisp, scheme,
  170.   TeX, and Fortran programs.  The DOS program name is "etags.exe".  See
  171.   the sources in "emacs-18.59/tags.xx" for details.
  172.  
  173. * Better error message support.  If there's an error in _emacs, you'll
  174.   get something a bit more useful than "error in init file".
  175.  
  176. * Fixed the bug where files on the command line had to contain names
  177.   with forward slashes if they were not in the current directory.
  178.   Filenames on the command line are now allowed to contain backslashes
  179.   ("\") as directory separators.  Users of MSDOS filename completion
  180.   programs (like 4DOS) can use them to complete filenames for Emacs.
  181.  
  182.   The primary fix for this is in `expand-file-name'; this function will
  183.   now lower-case the filename, and convert backslashes to forward
  184.   slashes.
  185.  
  186. * Fixed the bug where dired "randomly" displayed some file dates with a
  187.   year (e.g., "1990") instead of a time (e.g., "14:53").  Now, dired
  188.   will display the file's modification year if the file is
  189.   *approximately* over six months old (the actual time is around six
  190.   months plus or minus a day or two).  This is more like Unix.
  191.  
  192. * If Emacs runs out of memory, Emacs should get a "memory exhausted"
  193.   error (however, I suspect that there are occasional corner cases where
  194.   Emacs will crash).  If Emacs does get a "memory exhausted" error, I
  195.   strongly recommend that you exit and restart Emacs.  Not only will
  196.   this unfragment memory, but it will insure that Emacs' internal data
  197.   structures are correct (which should be, but might not be, after a
  198.   "memory exhausted" condition).
  199.  
  200. * If Emacs is improperly installed and `(load "loadup.el")' cannot be
  201.   done or encounters errors, Emacs will display an error message, abort,
  202.   and return to the DOS prompt.  Other versions of Emacs would simply
  203.   start up an unusable (and nearly unquittable) Emacs.
  204.  
  205. * I strongly recommend that you have 12-16MB of RAM on your motherboard,
  206.   and that you have a permanent swap large enough to give you at least
  207.   16MB of free RAM after starting Windows 3.1.  Merely starting Emacs
  208.   within a Windows DOS box sucks up FOUR MEGABYTES of (virtual) RAM.  I
  209.   have no idea where the memory is going.  I've written some code to do
  210.   malloc(3) instrumentation, to see where the memory is going, but Emacs
  211.   is only allocating 200-300KB of RAM at startup.  I suspect that most
  212.   of the RAM is being eaten by the DOS extender.  (Interestingly enough,
  213.   running this version under plain DOS uses much less memory.)
  214.  
  215.   Also note that Emacs allocates memory in sizes that are a power of 2.
  216.   If, for example, you try to edit a 5MB file, Emacs will attempt to
  217.   allocate an 8MB chunk of memory to hold the file.  If you don't have
  218.   that much memory left, Emacs will get a "memory exhausted" error.
  219.  
  220. * `M-x compile' does not work within a Windows 3.1 DOS box, while it
  221.   does work outside of Windows.  If you try running Borland C++ 3.1 via
  222.   M-x compile, the Borland compiler will hang.  If you try running the
  223.   WATCOM C/386 compiler via M-x compile, Emacs will abort (you will lose
  224.   *ALL* your work) after the compile/link has completed.  I suspect that
  225.   this is a problem with the DOS extender (I can reproduce the problem
  226.   with a small program that does nothing but execute system(2)), and so
  227.   this problem will probably not get fixed.
  228.  
  229.   However, if you do `M-x compile' under plain MSDOS (which does seem to
  230.   work), this version fixes the bugs in demacs 1.2.0 where the current
  231.   drive is not saved.  Your compile process can now switch drives and
  232.   change directories, and the current drive/directory will still be
  233.   saved.  Also, as a special case, if the compile program is not on the
  234.   current drive, the drive/current directory will be saved/restored on
  235.   the drive where the compiled program is stored.
  236.  
  237. * I've had this version lock up if I tried to execute a built-in DOS
  238.   command (e.g., "rmdir") via `call-process' (the dired "delete
  239.   directory" command will fail without locking up Emacs, though).
  240.  
  241. * Running this version within a Windows 3.1 DOS box seems to cause
  242.   Windows to disable the screen saver (if one is used).  I have no idea
  243.   what is happening here.
  244.  
  245. * I left in the "int86" function.  Be careful using this function, as
  246.   you can easily crash the system by passing incorrect or bad values.
  247.  
  248. * Because this version is compiled using WATCOM C/386 9.0, the maximum
  249.   runtime stack size must be specified at link time (unlike demacs,
  250.   whose stack grows as necessary).  In this version, the stack size is
  251.   fixed at 300K (if you want this changed, you'll have to relink emacs).
  252.  
  253. * This version suffers from the NIH syndrome.  While much of the code
  254.   was stolen from demacs 1.2.0, much of it wasn't.  I merged in, by hand
  255.   (from diff -c), much of the MSDOS- and 8-bit-specific code, but left
  256.   out the NEMACS and FEPCTRL (??) code.  This will probably make a lot
  257.   of people unhappy.  However, I didn't want to introduce bugs by
  258.   merging in code that I can't test, and so I didn't.
  259.  
  260. * Undump/unexec does not, and probably will never, work.  This means
  261.   that you'll need mondo quantities of disk space to store ALL of the
  262.   emacs-lisp files, and that starting Emacs will be SLOW.  You will need
  263.   perhaps 5-10MB for a minimal Emacs installation.  On my 33MHz 486DX
  264.   w/256KB cache, it takes about 10 seconds to start Emacs from DOS, and
  265.   about 11 seconds to start from a Windows 3.1 DOS box.  Not fast, but
  266.   bearable.
  267.  
  268.   This problem is caused by the fact that the DOS extender (DOS/4GW)
  269.   that comes with WATCOM C/386 has an sbrk() that somehow returns some
  270.   pointer values LESS THAN the ending address of the BSS space.  Can you
  271.   say #define VIRT_ADDR_VARIES (for Emacs)?  Another related problem
  272.   is that the addresses returned by the DPMI provider in Windows 3.1
  273.   have some of the most significant bits set (e.g., 0x80000000 or
  274.   0x81000000).  Can you say #define DATA_SEG_BITS with variable data
  275.   segment bits (they vary between plain MSDOS and a Windows 3.1 DOS
  276.   box)?  Ptuii.  This means that there's a potentially nasty situation
  277.   that could occur if, in Windows, the DPMI provider starts returning
  278.   pointers whose ~GCTYPEMASK bits vary; currently, Emacs will abort()
  279.   if:
  280.  
  281.     (raw_pointer1 & ~GCTYPEMASK) != (raw_pointer2 & ~GCTYPEMASK)
  282.  
  283.   ("raw pointers" are pointers without the GC type bits.)  Great
  284.   possibilities for DATA LOSS exist here (if Emacs aborts), and I'm not
  285.   sure if this "problem" will ever get solved.  If this problem exists,
  286.   it'll probably manifest itself as intermittent Emacs abort()'s
  287.   (abortions?).
  288.  
  289.   However, I've tried editing 5MB files under Windows 3.1, and I haven't
  290.   noticed any problems.
  291.  
  292.   I'd like to use djgcc, but I can't, until the djgcc DPMI issues are
  293.   straightened out.
  294.  
  295. * While I have pruned out much of the unnecessary, often
  296.   platform-specific code and other files, I haven't cleaned out the
  297.   emacs-18.59/etc and emacs-18.59/lisp directories; these directories
  298.   contain unnecessary and often useless files (as far as MSDOS is
  299.   concerned).
  300.  
  301. * Unfortunately, this version does NOT work on Windows NT.  At one time,
  302.   I thought that it might, but it doesn't.
  303.  
  304. * Instructions on compiling this version of Emacs has not been written.
  305.   Everything that you need is here (except for the WATCOM C/386 C
  306.   compiler, and the GNU termcap library).
  307.  
  308. * Some new emacs-lisp files were added.  Note that not all of the
  309.   packages in the following list have been ported to MSDOS, if they need
  310.   porting:
  311.  
  312.       + c++-mode.el (renamed to cxx-mode.el in this version)
  313.     Barry A. Warsaw's C/C++ editing mode.
  314.  
  315.       + c-style.el
  316.     This file allows you to configure sets of C code editing files.
  317.     This is most useful if you have to edit C code in a number of
  318.     different editing styles (e.g, different indentation, etc.).
  319.  
  320.       + header.el
  321.     Add and maintain file headers.  This mode knows about C
  322.     comments (as well as shell script/perl comments), and will
  323.     insert an appropriately-commented-out file header.  When a file
  324.     with a file header is saved, the modification time in the header
  325.     is automatically updated just before the file is saved.
  326.  
  327.       + add-doc.el
  328.     Appends user documentation to the end of the mode description.
  329.     Normally, this would contain documentation about user
  330.     enhancements/changes to the mode.
  331.  
  332.       + asm-mode.el
  333.     A major mode for editing typical assembler code.
  334.  
  335.       + b-k-ring.el
  336.     Browses the kill ring in another buffer.  Use C-y to yank most
  337.     recent kill ring entry (number 1.) into the buffer which was
  338.     current when browse-kill-ring was invoked.  Use a numeric
  339.     argument (M-# C-y) to yank the corresponding entry.
  340.  
  341.     If you move point into the browse-kill-ring buffer, the keys
  342.     C-y, y, Y, or SPC will yank the entry on the current line into
  343.     the previous buffer.
  344.  
  345.     Note that browse-kill-ring should always be called before its
  346.     contents is used; its buffer is not automatically updated when
  347.     kills and yanks are done.  This is normally not a problem, since
  348.     yanks will cause the buffer to be deleted automatically.
  349.  
  350.       + blink-mt.el    (was: blink-mtch.el)
  351.     Yet another form of parenthesis-matching code.
  352.  
  353.       + c-com-ed.el    (was: c-com-edit.el)
  354.     c-comment-edit is a command that copies a C comment into a
  355.     temporary buffer for editing under a more suitable major mode
  356.     (usually text-mode).  Once the comment is edited,
  357.     c-comment-edit-end (normally bound to C-c ESC) replaces the old
  358.     comment with the edited version, adding comment delimiters and
  359.     leaders as necessary.  c-comment-edit is ideal for large
  360.     comments of these styles:
  361.  
  362.         /*    /*    /*
  363.           ...     * ...    ** ...
  364.           ...     * ...    ** ...
  365.         */     */    */
  366.  
  367.       + c-doc.el
  368.     This package allows you to:
  369.     
  370.      1) Enter a description of a function, with its name, a module,
  371.         a file (normally taken to be the file the current buffer is
  372.         visiting), a documentation string (as large as you'd like),
  373.         the arguments (each with a name and a type and a
  374.         documentation string), and a result type.
  375.      2) Edit the description (i.e., any name, doc string, containing
  376.         module, etc.).
  377.      3) Get a buffer listing all functions/variables currently
  378.         defined, all functions residing in a given module, etc.
  379.      4) Get a buffer showing all the information on a given
  380.         function.
  381.      5) Read/write the documentation info from/to a file.
  382.      6) Visit a function's definition (basically a regexp on the
  383.         function's name within the defining file).  Kind of like a
  384.         tags visit, but driven from its own info.
  385.      7) Insert an (ANSI-compatible?) external decl of the function.
  386.         (Mostly works :-)).
  387.      8) Prompt for the arguments for a call to a given function,
  388.         showing argument types/names for each one.
  389.      9) Complete the symbol in front of point from the function
  390.         information.  (Like M-Tab, but again using its own table.)
  391.     10) Read a function definition from C source, prompt for
  392.         documentation, and add it to the list.
  393.  
  394.       + completi.el    (was: completion.el)
  395.     After you type a few characters, pressing the "complete" key
  396.     inserts the rest of the word you are likely to type.
  397.     
  398.     This watches all the words that you type and remembers them.
  399.     When typing a new word, pressing "complete" (meta-return)
  400.     "completes" the word by inserting the most recently used word
  401.     that begins with the same characters.  If you press meta-return
  402.     repeatedly, it cycles through all the words it knows about.
  403.     
  404.     If you like the completion then just continue typing, it is as
  405.     if you entered the text by hand.  If you want the inserted extra
  406.     characters to go away, type control-w or delete.  More options
  407.     are described below.
  408.     
  409.     The guesses are made in the order of the most recently "used".
  410.     Typing in a word and then typing a separator character (such as
  411.     a space) "uses" the word.  So does moving a cursor over the
  412.     word.
  413.     
  414.     You automatically save the completions you use to a file
  415.     between sessions.
  416.  
  417.       + edebug.tex
  418.       + edebug.el
  419.     Contains functions to allow the user to step through Emacs-lisp
  420.     code (as a function is executed, the cursor moves over the
  421.     source code).  Breakpoints can be set.    This is a much better
  422.     Emacs-lisp debugger than the one that comes with GNU Emacs.
  423.  
  424.       + ereplace.el
  425.     This source code replaces the emacs commands replace-string,
  426.     replace-regexp, query-replace, and query-replace-regexp with a
  427.     single command electric-replace-string.  While entering from
  428.     string, the user can use keystrokes to toggle between replacing
  429.     regexps and strings, or between query and noquery modes.  In
  430.     addition, the user can choose to apply the replace over the
  431.     entire (potentially narrowed) buffer, or over the entire region.
  432.     Lastly, the user can yank the last string or regexp searched
  433.     (depending on mode) to the from-string buffer.
  434.     
  435.     Quick summary:
  436.     
  437.       C-h        Print this help message
  438.       C-r        Toggle between string/regexp replace
  439.       M-q        Toggle in and out of query replace mode
  440.       C-l        Toggle region mode (replace only in region)
  441.       M-a        Toggle full buffer mode
  442.       C-s        Yank the last string/regexp searched
  443.     
  444.     The key bindings are far from perfect.  Perfect bindings should
  445.         a) not interfere with useful standard editing functions
  446.            (hence M-a and M-q instead of C-a, C-q).
  447.         b) be reasonably mnemonic.
  448.  
  449.       + infer-mo.el    (was: infer-mode.el)
  450.     Functions to infer the proper mode of a file from its contents,
  451.     not from its file extension.
  452.  
  453.       + info.el
  454.     A new version of the info file reader.
  455.  
  456.       + log-msg.el
  457.     Have you ever been frustrated by not being able to read an emacs
  458.     message because it gets overwritten by another message?  Then
  459.     this package is for you.  By setting the user variable
  460.     "log-messages" to non-nil, you can have the messages logged for
  461.     you in the buffer "*Message Log*"
  462.  
  463.       + macedit.el
  464.     A keyboard macro editor.  Very useful.  From GNU Calc.
  465.  
  466.       + minibuf.el
  467.     Functions to grow/shrink minibuffer window so that all lines show.
  468.